package com.jctrip.hotel.source.model.elong.req.online;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @Author: zxy
 * @CreateTime: 2023-10-10 11:43
 * @Description:
 */
@Data
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ElongHotelReq implements Serializable {
    @ApiModelProperty(value = "入住日期", required = true)
    @JsonProperty("ArrivalDate")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date arrivalDate;

    @ApiModelProperty(value = "离店日期", required = true)
    @JsonProperty("DepartureDate")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date departureDate;

    @ApiModelProperty(value = "城市编码", required = true)
    @JsonProperty("CityId")
    private String cityId;

    @ApiModelProperty(value = "查询关键词")
    @JsonProperty("QueryText")
    private String queryText;

    @ApiModelProperty(value = "查询类型")
    @JsonProperty("QueryType")
    private String queryType;

    @ApiModelProperty(value = "酒店名称")
    @JsonProperty("HotelName")
    private String hotelName;

    @ApiModelProperty(value = "位置名称")
    @JsonProperty("LocationName")
    private String locationName;

    @ApiModelProperty(value = "支付方式")
    @JsonProperty("PaymentType")
    private String paymentType;

    @ApiModelProperty(value = "产品类型")
    @JsonProperty("ProductProperties")
    private String productProperties;

    @ApiModelProperty(value = "设施")
    @JsonProperty("Facilities")
    private String facilities;

    @ApiModelProperty(value = "主题")
    @JsonProperty("ThemeIds")
    private String themeIds;

    @ApiModelProperty(value = "过滤项列表")
    @JsonProperty("FilterList")
    private List<HotelFilterType> filterList;

    @ApiModelProperty(value = "推荐星级")
    @JsonProperty("StarRate")
    private String starRate;

    @ApiModelProperty(value = "品牌编码")
    @JsonProperty("BrandId")
    private String brandId;

    @ApiModelProperty(value = "酒店集团编码")
    @JsonProperty("GroupId")
    private Integer groupId;

    @ApiModelProperty(value = "最小价格")
    @JsonProperty("LowRate")
    private Integer lowRate;

    @ApiModelProperty(value = "最大价格")
    @JsonProperty("HighRate")
    private Integer highRate;

    @ApiModelProperty(value = "地区编码")
    @JsonProperty("DistrictId")
    private String districtId;

    @ApiModelProperty(value = "商圈编码")
    @JsonProperty("BusinessZoneId")
    private String businessZoneId;

    @ApiModelProperty(value = "位置查询")
    @JsonProperty("Position")
    private Position position;

    @ApiModelProperty(value = "预付发票模式")
    @JsonProperty("InvoiceMode")
    private String invoiceMode;

    @ApiModelProperty(value = "排序类型")
    @JsonProperty("Sort")
    private String sort;

    @ApiModelProperty(value = "页码")
    @JsonProperty("PageIndex")
    private Integer pageIndex;

    @ApiModelProperty(value = "每页记录数")
    @JsonProperty("PageSize")
    private Integer pageSize;

    @ApiModelProperty(value = "宾客类型")
    @JsonProperty("CustomerType")
    private String customerType;

    @ApiModelProperty(value = "房间入住人数")
    @JsonProperty("CheckInPersonAmount")
    private Integer checkInPersonAmount;

    @ApiModelProperty(value = "返回信息类型")
    @JsonProperty("ResultType")
    private String resultType;

    @Data
    @Builder
    public static class Position implements Serializable {
        @ApiModelProperty(value = "经度", required = true)
        @JsonProperty("Longitude")
        private BigDecimal longitude;

        @ApiModelProperty(value = "纬度", required = true)
        @JsonProperty("Latitude")
        private BigDecimal latitude;

        @ApiModelProperty(value = "半径")
        @JsonProperty("Radius")
        private Integer radius;
    }

    @Data
    @Builder
    public static class HotelFilterType implements Serializable {
        @ApiModelProperty(value = "筛选TypeId", required = true)
        @JsonProperty("FilterTypeId")
        private Integer filterTypeId;

        @ApiModelProperty(value = "筛选项Id", required = true)
        @JsonProperty("FilterId")
        private Integer filterId;
    }
}
